// 7-3 IP地址转换 (15分)
// 一个IP地址是用四个字节（每个字节8个位）的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。

// 输入格式：
// 输入在一行中给出32位二进制字符串。

// 输出格式：
// 在一行中输出十进制格式的IP地址，其由4个十进制数组成（分别对应4个8位的二进制数），中间用“.”分隔开。

// 输入样例：
// 11001100100101000001010101110010
// 输出样例：
// 204.148.21.114

#include <stdio.h>
#include <string.h>

int ipConvert(char * ipStr);
// char * s_gets(char * st, int n);
int main()
{
    char ipStr[4][9] = {'\0'};
    int ipArr[4];
    for (int i = 0; i < 4; i++)
    {
        fgets(ipStr[i], 9, stdin);
    }
    for (int i = 0; i < 4; i++)
    {
        ipArr[i] = ipConvert(ipStr[i]);
    }
    for (int i = 0; i < 4; i++)
    {
        printf("%d", ipArr[i]);
        if (i < 3)
        {
            printf(".");
        }
    }

    return 0;
}

// char * s_gets(char * st, int n)
// {
//     int i = 0;
//     char * ret_val;
//     fgets(st, n, stdin);
//     if (ret_val)
//     {
//         while (st[i] != '\0' && st[i] != '\n')
//         {
//             i++;
//         }
//         if (st[i] == '\n')
//         {
//             st[i] = '\0';
//         }
//         else
//         {
//             while (getchar() != '\n')
//             {
//                 continue;
//             }
//         }
//     }

//     return ret_val;
// }

int ipConvert(char * ipStr)
{
    int ret = 0;
    for (int i = 0; i < strlen(ipStr); i++)
    {
        ret = 2 * ret + (ipStr[i] - '0');  // 关键代码，二进制转十进制
    }
    return ret;
}